/**
 * 主题切换工具
 * 提供主题相关的工具方法
 */

/**
 * 应用主题到页面
 * @param {string} theme - 主题名称: light, dark, auto
 * @param {object} systemInfo - 系统信息对象
 */
export function applyThemeToPage(theme, systemInfo = null) {
	try {
		let actualTheme = theme
		
		// 如果是自动模式，检测系统主题
		if (theme === 'auto') {
			if (systemInfo && systemInfo.theme) {
				actualTheme = systemInfo.theme === 'dark' ? 'dark' : 'light'
			} else {
				// 获取系统信息
				const sysInfo = uni.getSystemInfoSync()
				if (sysInfo.theme) {
					actualTheme = sysInfo.theme === 'dark' ? 'dark' : 'light'
				} else {
					// 兜底使用浅色模式
					actualTheme = 'light'
				}
			}
		}
		
		// 应用主题到页面元素
		const pages = getCurrentPages()
		if (pages.length > 0) {
			const currentPage = pages[pages.length - 1]
			if (currentPage && currentPage.$vm) {
				currentPage.$vm.$nextTick(() => {
					try {
						// 设置页面的主题属性
						if (currentPage.$vm.$el) {
							currentPage.$vm.$el.setAttribute('data-theme', actualTheme)
						}
						
						// 设置 document 的主题属性（如果在 H5 环境）
						if (typeof document !== 'undefined') {
							document.documentElement.setAttribute('data-theme', actualTheme)
							document.body.setAttribute('data-theme', actualTheme)
						}
					} catch (error) {
						console.warn('设置页面主题属性失败:', error)
					}
				})
			}
		}
		
		// 设置导航栏样式
		setNavigationBarTheme(actualTheme)
		
		// 设置标签栏样式
		setTabBarTheme(actualTheme)
		
		return actualTheme
		
	} catch (error) {
		console.error('应用主题失败:', error)
		return 'light' // 失败时返回默认主题
	}
}

/**
 * 设置导航栏主题
 * @param {string} theme - 主题名称
 */
export function setNavigationBarTheme(theme) {
	try {
		if (theme === 'dark') {
			uni.setNavigationBarColor({
				frontColor: '#ffffff',
				backgroundColor: '#1F2937',
				animation: {
					duration: 300,
					timingFunc: 'easeInOut'
				}
			})
		} else {
			uni.setNavigationBarColor({
				frontColor: '#000000',
				backgroundColor: '#ffffff',
				animation: {
					duration: 300,
					timingFunc: 'easeInOut'
				}
			})
		}
	} catch (error) {
		console.warn('设置导航栏主题失败:', error)
	}
}

/**
 * 设置标签栏主题
 * @param {string} theme - 主题名称
 */
export function setTabBarTheme(theme) {
	try {
		if (theme === 'dark') {
			uni.setTabBarStyle({
				color: '#9CA3AF',
				selectedColor: '#3B82F6',
				backgroundColor: '#1F2937',
				borderStyle: 'black'
			})
		} else {
			uni.setTabBarStyle({
				color: '#6B7280',
				selectedColor: '#3B82F6',
				backgroundColor: '#FFFFFF',
				borderStyle: 'black'
			})
		}
	} catch (error) {
		console.warn('设置标签栏主题失败:', error)
	}
}

/**
 * 获取当前实际应用的主题
 * @param {string} settingTheme - 设置中的主题
 * @param {object} systemInfo - 系统信息
 * @returns {string} 实际主题
 */
export function getActualTheme(settingTheme, systemInfo = null) {
	if (settingTheme === 'auto') {
		if (systemInfo && systemInfo.theme) {
			return systemInfo.theme === 'dark' ? 'dark' : 'light'
		}
		
		try {
			const sysInfo = uni.getSystemInfoSync()
			if (sysInfo.theme) {
				return sysInfo.theme === 'dark' ? 'dark' : 'light'
			}
		} catch (error) {
			console.warn('获取系统主题失败:', error)
		}
		
		return 'light' // 默认浅色
	}
	
	return settingTheme
}

/**
 * 检查系统是否支持深色模式
 * @returns {boolean} 是否支持
 */
export function isSystemDarkModeSupported() {
	try {
		const systemInfo = uni.getSystemInfoSync()
		return !!(systemInfo.theme)
	} catch (error) {
		console.warn('检查系统深色模式支持失败:', error)
		return false
	}
}

/**
 * 监听系统主题变化
 * @param {function} callback - 回调函数
 * @returns {function} 取消监听的函数
 */
export function watchSystemTheme(callback) {
	if (uni.onThemeChange && typeof uni.onThemeChange === 'function') {
		uni.onThemeChange(callback)
		
		// 返回取消监听的函数
		return () => {
			if (uni.offThemeChange && typeof uni.offThemeChange === 'function') {
				uni.offThemeChange(callback)
			}
		}
	}
	
	return () => {} // 空函数
} 